/*
Date:20210529 20:52PM
key:第二次做 注意二维数组的结构
*/
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) 
    {
        
        const int dic[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
        vector<int>v;
        if(matrix.size()==0){return v;}
        const int n=matrix.size();
        const int m=matrix[0].size();
        v.resize(m*n);
        int x=0,y=0,d=0;
        for(int i=0;i<m*n;i++)
        {
            v[i]=matrix[x][y];
            matrix[x][y]=INT_MAX;
            int newx=x+dic[d][0];
            int newy=y+dic[d][1];
            if(newx>-1&&newx<n&&newy>-1&&newy<m&&(matrix[newx][newy]!=INT_MAX))
            {
                x=newx;
                y=newy;
            }
            else
            {
                d=(++d)%4;
                x=x+dic[d][0];
                y=y+dic[d][1];
            }
        }
        return v;
    }
};